hi all, 來到第28天 昨天已經列點了 Hangfire 支援的 job 類型及實做了簡單的 Recurring job ,今天就來讓他呼叫專案的API吧。
首先我們需要先針對 Controller 給予特定的 HttpClient DI
builder.Services.AddHttpClient<ChainController>("LocalClient", client =>
{
client.BaseAddress = new Uri("http://localhost:8080");
});
builder.Services.AddTransient<IChainApi, ChainApi>();
新增端點給來 create job
public class ChainController(IChainApi chainApi) : Controller
{
[HttpGet("/generate")]
public IActionResult GenerateBlocks()
{
RecurringJob.AddOrUpdate("generate block", () => chainApi.GenerateNewBlock(), Cron.Minutely);
return Ok("Generate new block job added");
}
}
public interface IChainApi
{
Task GenerateNewBlock();
}
public class ChainApi(HttpClient httpClient) : IChainApi
{
public async Task GenerateNewBlock()
{
var response = await httpClient.PostAsync("api/v1/chain/new", new StringContent(""));
response.EnsureSuccessStatusCode();
}
}
以上都補上後就可以將 Hangfire 運行起來新增 job了,接著就可以觀察 BlockChain 是否有被呼叫。
今天將 cronjob 架設完成,此次鐵人賽要做的實驗用區塊鏈就弄得差不多啦~~~
剩下的兩天就來做這30天的 recap吧。